require('dotenv').config();
const Format = require('string-format');

const OpenAI = require('openai');


const openai = new OpenAI({
  apiKey: process.env.AI_API_KEY,
  baseURL: process.env.AI_BASE_URL,
});

const systemProptTemplate = `你是一名资深中文-日语翻译人员，两种语言以达到native的水平，需要你将输入的内容{}翻译成{}，不用额外解释说明，只用翻译。
例子如下：
{}
`
const zhsample = `
用户输入：两张床是否能合在一起？
你翻译成：二つのベッドを合わせることはできますか？
用户输出：今天的列车几点钟出发，什么时候能到？
你翻译成：今日の列車は何時に出発し、いつ到着しますか？
`

const jpsample = `
用户输入：两张床是否能合在一起？
你翻译成：今日の列車は何時に出発し、いつ到着しますか？
用户输出：二つのベッドを合わせることはできますか？
你翻译成：可以把两张床拼在一起吗？
`

// "analysis": {
//     "speed": "xxx",
//     "rhythm": "xxx",
//     "melody": "xxx",
//     "mode": "xxx",
//     "emotion": "xxx",
//     "technical_observation": "xxx"
//   }

function getDayOfYear() {
    const now = new Date();
    const startOfYear = new Date(now.getFullYear(), 0, 0); // 获取年初的日期
    const diffTime = now - startOfYear; // 计算当前日期与年初之间的毫秒数差
    const dayOfYear = Math.ceil(diffTime); // 将毫秒数转换为天数
    // const dayOfYear = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); // 将毫秒数转换为天数
    return dayOfYear;
}

async function local_translate(text, from, to) {
    const ret = {}
    try {
        const sample = (from === 'zh' && to === 'ja') ? zhsample : jpsample;
        const fromname = (from === 'zh') ? "中文" : "日语";
        const toname = (to === 'zh') ? "中文" : "日语";

        const sysPropt = Format(systemProptTemplate, fromname, toname, sample);
        console.log("sysPropt:" + sysPropt);
        console.log("text:" + text);

        const response = await openai.chat.completions.create({
            model: "deepseek-chat",
            messages: [
                { role: "system", content: sysPropt },
                { role: "user", content: text }
            ],
            temperature: 1,
            max_tokens : 8192,
        });
        
        ret.retcode = process.env.ERRCODE_OK;
        ret.translate_text = response.choices[0].message.content;
        ret.tokens = response.usage.total_tokens;
        return ret;
    } catch (error) {
        console.error("OpenAI API Error:", error);
        ret.retcode = process.env.ERRCODE_FAIL;
        ret.retmsg = error.toString();
        ret.tokens = 0;
        return ret;
    }
}
  

const translater = {
translate: async function(text, from, to) {
    return await local_translate(text, from, to);
}
}
//   // 使用示例
//   const answer = await analyse("解释量子计算的基本概念");
//   console.log(answer);


module.exports = translater;